package com.hengpeng.itfinbase.constants;

import java.io.Serializable;

/**
 * <pre>
 * 定义支付模块的常量
 * </pre>
 * @author linriqing
 * @version 1.0, 2006-8-8
 */
public class PaymentConstants implements Serializable
{

	private static final long serialVersionUID = 4567665922140855707L;

	/**
	 * 支付接口默认的编码格式 {@value}
	 * @value "text/html; charset=GBK"
	 */
	public static final String PORTAL_RESPONSE_DEFAULT_ENCODING = "text/html; charset=GBK";

	/**
	 * 支付接口协议消息的字符串编码 {@value}
	 * <p>
	 * GBK
	 * </p>
	 */
	public final static String MESSAGE_ANTEAGENT_ENCODING = "GBK";

	/**
	 * 扣款方式 {@value}
	 * @value 本地扣款
	 */
	public final static String PAYMENT_LOCATION_LOCAL = "本地扣款";

	/**
	 * 扣款方式 {@value}
	 */
	public final static String PAYMENT_LOCATION_REMOTE = "远程扣款";

	/**
	 * 默认本地连接方式 {@value}
	 * @value INTERNAL
	 */
	public final static String PAYMENT_PROTOCOL_INTERNAL = "INTERNAL";

	/**
	 * HTTP连接方式 {@value}
	 * @value HTTP_CONNECT
	 */
	public final static String PAYMENT_PROTOCOL_HTTP_CONNECT = "HTTP_CONNECT";

	/**
	 * HTTPS连接方式 {@value}
	 * @value HTTPS_CONNECT
	 */
	public final static String PAYMENT_PROTOCOL_HTTPS_CONNECT = "HTTPS_CONNECT";

	/**
	 * HTTP连接方式 {@value}
	 * @value HTTP_REDIRECT
	 */
	public final static String PAYMENT_PROTOCOL_HTTP_REDIRECT = "HTTP_REDIRECT";

	/**
	 * HTTPS连接方式 {@value}
	 * @value HTTPS_REDIRECT
	 */
	public final static String PAYMENT_PROTOCOL_HTTPS_REDIRECT = "HTTPS_REDIRECT";

	/**
	 * JMS连接方式 {@value}
	 * @value JMS_CONNECT
	 */
	public final static String PAYMENT_PROTOCOL_JMS_CONNECT = "JMS_CONNECT";

	/**
	 * SOCKET连接方式 {@value}
	 * @value SOCKET_CONNECT
	 */
	public final static String PAYMENT_PROTOCOL_SOCKET_CONNECT = "SOCKET_CONNECT";

	/**
	 * 是否需要安全 {@value}
	 * @value true
	 */
	public final static String PAYMENT_NEEDENCRYPT_YES = "true";

	/**
	 * 是否需要安全 {@value}
	 * @value false
	 */
	public final static String PAYMENT_NEEDENCRYPT_NO = "false";

	/**
	 * MD5加密算法 {@value}
	 * @value 1
	 */
	public final static int PAYMENT_ENCRYPT_ALGORITHM_MD5 = 1;

	/**
	 * DES加密算法 {@value}
	 * @value 2
	 */
	public final static int PAYMENT_ENCRYPT_ALGORITHM_DES = 2;

	/**
	 * 自定义加密算法 {@value}
	 * @value 0
	 */
	public final static int PAYMENT_ENCRYPT_ALGORITHM_CUSTOM = 0;

	/**
	 * 充值操作 {@value}
	 * @value 110
	 */
	public final static int PAYMENT_TRANSCODE_DEPOSIT_REQUEST = 110;
	
	/**
	 * 充值操作响应 {@value}
	 * @value 111
	 */
	public final static int PAYMENT_TRANSCODE_DEPOSIT_RESPONSE = 111;

	/**
	 * 对帐操作 {@value}
	 * @value 180
	 */
	public final static int PAYMENT_TRANSCODE_RECONCILE_REQUEST = 180;

	/**
	 * 对帐操作响应 {@value}
	 * @value 181
	 */
	public final static int PAYMENT_TRANSCODE_RECONCILE_RESPONSE = 181;

	/**
	 * 交易查询操作 {@value}
	 * @value 190
	 */
	public final static int PAYMENT_TRANSCODE_TRANSQUERY_REQUEST = 190;

	/**
	 * 交易参数获取方式: 提交时创建, 以(paramValue)作为(paramType)的构造函数参数创建 {@value}
	 * @value NEW
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_NEW = "NEW";

	/**
	 * 交易参数获取方式: 调用者传值, 传入参数名称配置在(paramValue)中 {@value}
	 * @value POST
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_POST = "POST";

	/**
	 * 交易参数获取方式: 根据接口自定义, 需要在支付商交易接口方法内自定义 {@value}
	 * @value CUSTOM
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_CUSTOM = "CUSTOM";

	/**
	 * 交易参数获取方式: 根据支付商的某些配置值创建, 配置名称以#分隔存放在(paramValue)中, 配置名称规则如:#对象名#属性名#, 可以包含随机数,随机数以#RANDOM#表示, 随机数位数紧随其后同样以#分隔 * *
	 * * {@value}
	 * @value CONFIG
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_CONFIG = "CONFIG";

	/**
	 * 交易参数获取方式: 提交时创建随机数, 随机数由(paramType)的默认构造函数创建并执行randomize方法随机化, 随机数位数存放在(paramValue)中 {@value}
	 * @value RANDOM
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_RANDOM = "RANDOM";

	/**
	 * 交易参数获取方式: 固定值, 参数值存放在(paramValue)中 {@value}
	 * @value CONSTANT
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_CONSTANT = "CONSTANT";

	/**
	 * 交易参数获取方式: 通过Provider对象获取, 属性名存放在(paramValue)中 {@value}
	 * @value PROVIDER
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_PROVIDER = "PROVIDER";

	/**
	 * 交易参数获取方式: 通过Transaction对象获取, 属性名存放在(paramValue)中 {@value}
	 * @value TRANSACTION
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_TRANSACTION = "TRANSACTION";

	/**
	 * 交易参数获取方式: 通过Transaction对象的参数值获取, 参数名存放在(paramValue)中 {@value}
	 * @value PARAMETER
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_PARAMETER = "PARAMETER";

	/**
	 * 交易参数获取方式: 通过摘要加密获取, 加密方法的参数存放在(paramValue)中以#分隔 {@value}
	 * @value DIGEST
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_DIGEST = "DIGEST";

	/**
	 * 交易参数获取方式: 特别参数转换处理
	 * @value HEX
	 */
	public final static String PAYMENT_PARAMETER_FETCH_PREFIX_HEX = "HEX";

	/**
	 * 交易状态:开始 {@value}
	 * @value processing
	 */
	public final static String PAYMENT_TRANSMESSAGE_STATE_PROCESSING = "processing";

	/**
	 * 交易状态:成功 {@value}
	 * @value success
	 */
	public final static String PAYMENT_TRANSMESSAGE_STATE_SUCCESS = "success";

	/**
	 * 交易状态:失败 {@value}
	 * @value failed
	 */
	public final static String PAYMENT_TRANSMESSAGE_STATE_FAILED = "failed";

	/**
	 * 交易状态:异常 {@value}
	 * @value exception
	 */
	public final static String PAYMENT_TRANSMESSAGE_STATE_EXCEPTION = "exception";

	/**
	 * 对帐验证交易记录状态:成功 {@value}
	 * @value 1
	 */
	public final static short PAYMENT_RECONCILE_VALIDFLAG_SUCCESS = 1;

	/**
	 * 对帐验证交易记录状态:未知 {@value}
	 * @value 0
	 */
	public final static short PAYMENT_RECONCILE_VALIDFLAG_UNKONWN = 0;

	/**
	 * 对帐验证交易记录状态:失败 {@value}
	 * @value -1
	 */
	public final static short PAYMENT_RECONCILE_VALIDFLAG_FAILED = -1;

	/**
	 * 对帐验证交易记录状态:等待处理 {@value}
	 * @value 2
	 */
	public final static short PAYMENT_RECONCILE_VALIDFLAG_WAITING = 2;

	/**
	 * 对帐验证交易记录状态:无记录 {@value}
	 * @value -2
	 */
	public final static short PAYMENT_RECONCILE_VALIDFLAG_NOTFOUND = -2;

	/**
	 * 对帐验证交易记录状态:核对错误 {@value}
	 * @value -3
	 */
	public final static short PAYMENT_RECONCILE_VALIDFLAG_INCORRECT = -3;

	/**
	 * 支付系统参数名称:会话超时分钟数 {@value}
	 * @value PAYMENTHANDLER_SESSIONTIMEOUT
	 */
	public static final String PAYMENT_SYSPARAM_SESSIONTIMEOUT = "PAYMENTHANDLER_SESSIONTIMEOUT";

	/**
	 * 支付系统参数名称:网关返回支付结果页面处理的URL {@value}
	 * @value PAYMENTHANDLER_HTTPPAGERTNURL
	 */
	public static final String PAYMENT_SYSPARAM_HTTPPAGERTNURL = "PAYMENTHANDLER_HTTPPAGERTNURL";

	/**
	 * 支付系统参数名称:网关返回支付结果后台处理的URL {@value}
	 * @value PAYMENTHANDLER_HTTPBGRTNURL
	 */
	public static final String PAYMENT_SYSPARAM_HTTPBGRTNURL = "PAYMENTHANDLER_HTTPBGRTNURL";

	/**
	 * 支付接口协议消息的交易类型参数名称 {@value}
	 * <p>
	 * transType
	 * </p>
	 */
	public final static String MESSAGE_ANTEAGENT_NAMING_TRANSTYPE = "transType";

	/**
	 * 支付接口协议消息的交易消息参数名称 {@value}
	 * <p>
	 * transMessage
	 * </p>
	 */
	public final static String MESSAGE_ANTEAGENT_NAMING_TRANSMESSAGE = "transMessage";

	/**
	 * 分割支付接口协议消息的分割符 {@value}
	 * <p>
	 * transMessage
	 * </p>
	 */
	public final static String MESSAGE_ANTEAGENT_NAMING_TRANSMESSAGE_SPLIT_KEY = "=";

	/**
	 * 支付流水帐状态: 已结算 {@value}
	 * @value 6
	 */
	public static final int PAYMENT_PAYMENTTRANSDETAIL_TRANSSTATE_BALANCED = 6;

	/**
	 * 支付流水帐状态: 已对账 {@value}
	 * @value 5
	 */
	public static final int PAYMENT_PAYMENTTRANSDETAIL_TRANSSTATE_CHECKED = 5;

	/**
	 * 支付流水帐状态: 无效 {@value}
	 * @value 2
	 */
	public static final int PAYMENT_PAYMENTTRANSDETAIL_TRANSSTATE_NOTVALID = 2;

	/**
	 * 支付流水帐状态: 已冲正， {@value}
	 * @value 4
	 */
	public static final int PAYMENT_PAYMENTTRANSDETAIL_TRANSSTATE_UNDOED = 4;

	/**
	 * 支付流水帐状态: 有效， {@value}
	 * @value 3
	 */
	public static final int PAYMENT_PAYMENTTRANSDETAIL_TRANSSTATE_VALID = 3;

	/**
	 * 支付流水帐状态: 未决， {@value}
	 * @value 1
	 */
	public static final int PAYMENT_PAYMENTTRANSDETAIL_TRANSSTATE_WAIT = 1;

	/**
	 * 支付系统服务接口Spring上下文名称
	 * @value paymentservice
	 */
	public static final String PAYMENTSERVICE_SPRING_CONTEXT_NAME = "paymentservice";

	/**
	 * 交易错误代码:系统错误 {@value}
	 * @value 9999
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_UNKOWN = "9999";

	/**
	 * 交易错误代码:系统错误 {@value}
	 * @value 系统错误
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_UNKOWN = "系统错误";

	/**
	 * 交易错误代码:未找到支付提供商 {@value}
	 * @value 9001
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_NOPROVIDER = "9001";

	/**
	 * 交易错误代码:未找到支付提供商 {@value}
	 * @value 未找到支付提供商
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_NOPROVIDER = "未找到支付提供商";

	/**
	 * 交易错误代码:未找到交易类型 {@value}
	 * @value 9002
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_NOTRANSACTION = "9002";

	/**
	 * 交易错误代码:未找到交易类型 {@value}
	 * @value 未找到交易类型
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_NOTRANSACTION = "未找到交易类型";

	/**
	 * 交易错误代码:提交参数不能为空 {@value}
	 * @value 9003
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_MISSPARAMETER = "9003";

	/**
	 * 交易错误代码:提交参数不能为空 {@value}
	 * @value 提交参数不能为空
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_MISSPARAMETER = "提交参数不能为空";

	/**
	 * 交易错误代码:不支持的字符编码 {@value}
	 * @value 9004
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_NOTSUPPORTENCODING = "9004";

	/**
	 * 交易错误代码:不支持的字符编码 {@value}
	 * @value 不支持的字符编码
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_NOTSUPPORTENCODING = "不支持的字符编码";

	/**
	 * 交易错误代码:支付网关返回错误 支付失败{@value}
	 * @value 9005
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_PROVIDERERROR = "9005";

	/**
	 * 交易错误代码:支付网关返回错误 支付失败{@value}
	 * @value 支付网关返回错误
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_PROVIDERERROR = "支付网关返回错误";

	/**
	 * 交易错误代码:数字签名错误 {@value}
	 * @value 9006
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_DIGESTERROR = "9006";

	/**
	 * 交易错误代码:数字签名错误 {@value}
	 * @value 数字签名错误
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_DIGESTERROR = "数字签名错误";

	/**
	 * 交易错误代码:交易金额不符 {@value}
	 * @value 9007
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_MISMONEY = "9007";

	/**
	 * 交易错误代码:交交易金额不符 {@value}
	 * @value 交易金额不符
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_MISMONEY = "交易金额不符";

	/**
	 * 交易错误代码:交易重复处理 {@value}
	 * @value 9008
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_TRANSREPEAT = "9008";

	/**
	 * 交易错误代码:交易重复处理 {@value}
	 * @value 交易重复处理
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_TRANSREPEAT = "交易重复处理";

	/**
	 * 交易错误代码:交易不存在 {@value}
	 * @value 9009
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_MISTRANS = "9009";

	/**
	 * 交易错误代码:交易不存在 {@value}
	 * @value 交易不存在
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_MISTRANS = "交易不存在";

	/**
	 * 交易错误代码:未找到被支付用户 {@value}
	 * @value 9000
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_NOUSER = "9020";

	/**
	 * 交易错误代码:未找到被支付用户 {@value}
	 * @value 未找到被支付用户
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_NOUSER = "未找到被支付用户";

	/**
	 * 交易错误代码:被支付用户状态不正常 {@value}
	 * @value 9000
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_USERABNORMAL = "9021";

	/**
	 * 交易错误代码:被支付用户状态不正常 {@value}
	 * @value 未找到被支付用户
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_USERABNORMAL = "被支付用户状态不正常";

	/**
	 * 交易错误代码:被支付用户状态不正常 {@value}
	 * @value 9000
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_UPDATEMONEY = "9022";

	/**
	 * 交易错误代码:被支付用户状态不正常 {@value}
	 * @value 未找到被支付用户
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_UPDATEMONEY = "更新金额出错，请人工冲正";

	/**
	 * 交易错误代码:交易成功 {@value}
	 * @value 0000
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_SUCCESS = "000";

	/**
	 * 交易错误代码:交易成功 {@value}
	 * @value 交易成功
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRMSG_SUCCESS = "交易成功";

	/**
	 * 交易错误代码:支付成功 {@value}
	 * @value 0000
	 */

	/**
	 * 交易错误代码:其它错误 {@value}
	 * @value 9023
	 */
	public final static String PAYMENT_TRANSMESSAGE_ERRCODE_OTHER = "9023";


	/**
	 * 交行银行代码
	 */
	public final static String BANKCOMMSOUCES = "002116";
	
	
	/**
	 * 上海银行充值过来的统一支付商
	 */
	public final static String PAYMENT_BANK_PROVIDERID = "8001";

}
